package othello.client.playroom;

import java.util.Map;

import othello.client.utility.screen.DrawableImage;

/**
 * <p>
 * 画像に関する設定を保持、実行するクラス。
 * </p>
 * TODO 設定については外部ファイルへの切り出しが定石だがGWTの絡みで可能か不明。要調査
 * 
 * @author onjiro.mohyahya
 */
interface ImageSettings {
	/**
	 * 画像設定、取得のキー
	 */
	static enum ImageKey {
		Board, BlackStone, WhiteStone
	};

	/**
	 * 読み込んだ画像を取得します。
	 * 
	 * @return Map<ImageKey, DrawableImage>
	 */
	public Map<ImageKey, DrawableImage> getImages();

	/**
	 * 設定の読み込みが完了しているかを判定します。
	 * 
	 * @return true:読み込み完了
	 */
	public boolean isLoadCompleted();

	/**
	 * マスのサイズを取得します。
	 * 
	 * @return
	 */
	public Position getCellSize();

	/**
	 * 位置情報の変換器を取得します。
	 * 
	 * @return 位置情報の変換器
	 */
	public PositionConvertor getPositionConvertor();

	/**
	 * ゲーム盤とピクセルのあいだでの位置情報の変換を受け持つクラス
	 */
	interface PositionConvertor {

		Position toPixelPosition(int xInBoard, int yInBoard);

		Position toGameBoardPosition(int xInPixel, int yInPixel);
	}
}
